﻿/*
 * Created by SharpDevelop.
 * User: kat
 * Date: 10/4/2011
 * Time: 8:36 PM
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */
using System;
using System.Drawing;
using System.Windows.Forms;
using Business_Logic;
using Business_Entity;
using System.Collections.Generic;

namespace PetSoft.GUI.Seguridad
{
	/// <summary>
	/// Description of GUIBuscarRoles.
	/// </summary>
	public partial class GUIBuscarRoles : Form
	{
		private List<BERol> listaRoles;
		private int colCheck;
		private BERol rolSel;
		
		public BERol RolSel {
			get { return rolSel; }
			set { rolSel = value; }
		}
		
		public GUIBuscarRoles(Boolean principal)
		{
			InitializeComponent();
			//this.CodigoTxt.KeyPress+= new KeyPressEventHandler( Utils.);
			this.CodigoTxt.KeyPress += new KeyPressEventHandler(Utils.SoloLetrasNumerosTB);
			this.DescripcionTxt.KeyPress += new KeyPressEventHandler(Utils.SoloLetrasNumerosTB);
			this.CodigoTxt.ShortcutsEnabled = false;
			this.DescripcionTxt.ShortcutsEnabled = false;
			this.rolSel = new BERol();
			this.colCheck = 0;
			
			if (principal){
				this.AceptarBTN.Visible = false;
			}
			else{
				this.VerBTN.Visible = false;
				this.EditarBTN.Visible = false;
				this.CancelarBTN.Visible = false;
				this.EliminarBTN.Visible = false;
			}
			
			
		}
		
		
		
		void DataGrid1Navigate(object sender, NavigateEventArgs ne)
		{
			
		}
		
		void Form1Load(object sender, EventArgs e)
		{
			
		}
		
		void Button3Click(object sender, EventArgs e)
		{
			Seguridad.GUIAdmRoles admRoles = new Seguridad.GUIAdmRoles(false);
			admRoles.ShowDialog(this);
		}
		
		void Button1Click(object sender, EventArgs e)
		{
			this.Close();
		}
		
		void Button2Click(object sender, EventArgs e)
		{
			Seguridad.GUIAdmRoles admRoles = new Seguridad.GUIAdmRoles(true);
			admRoles.ShowDialog(this);
			resultBuscarRol.Rows.Clear();
			buscarRol();
			
		}

		void buscarRol(){
			this.resultBuscarRol.Rows.Clear();
				BLRol blRol = new BLRol();
				List<BERol> beRol = new List<BERol>();
				
				List<String> datos = new List<String>();
				datos.Add(this.CodigoTxt.Text);
				datos.Add(this.DescripcionTxt.Text);
				for (int i=0; i<datos.Count; i++)
				{
					if (datos[i] == null)
						datos[i] = "";
				}
				//MessageBox.Show("rol: "+datos[0]+" desc: :"+datos[1],"Aviso");
				beRol = blRol.buscarRol(datos[0], datos[1]);
				if (beRol != null)
				{
					//this.resultBuscarRol.AllowUserToAddRows = false;
					this.listaRoles = beRol;
					this.resultBuscarRol.Rows.Clear();
					for (int j=0; j<beRol.Count; j++)
					{
						string[] fila = null;
						fila = new string[]{false.ToString(),
									beRol[j].Rol.ToString(),
						            beRol[j].Descripcion,
						            beRol[j].Estado
						            };
						this.resultBuscarRol.Rows.Add(fila);
					}
					//this.resultBuscarRol.AllowUserToAddRows = false;
					
					this.nroResultadosLB.Text = "Cantidad de resultados encotnrados: "+this.resultBuscarRol.Rows.Count.ToString();
			/*		
					if (this.resultBuscarRol.Rows.Count == 1)
						this.nroResultadosLB.Text = this.resultBuscarRol.Rows.Count + " resultado encontrado";
					else if (this.resultBuscarRol.Rows.Count == 0)
							this.nroResultadosLB.Text = "0 resultados encontrados";
					else if (this.resultBuscarRol.Rows.Count > 1)
						this.nroResultadosLB.Text = this.resultBuscarRol.Rows.Count + " resultados encontrados";
					
			*/	}
				else
					{
					Utils.MessageAviso("No se han hallado resultados");
				}
			
		}
		void Button4Click(object sender, EventArgs e)
		{
			buscarRol();
		}
		
		
		void visualizar(Boolean seEdita){
			try {
			
				
				int cont = 0;
				int aux = 0;
				int pos = 0;
				foreach (DataGridViewRow fila in resultBuscarRol.Rows)
				{
					if (fila.Cells[this.colCheck].Value != null && Convert.ToBoolean(fila.Cells[this.colCheck].Value))
					{
						cont++;
						pos = aux;
					}
					aux++;
				}
				
				if (cont == 0)
				{
					Utils.MessageAviso("Seleccione un rol.");	
				}
				else if (cont == 1)
				{								
					DataGridViewRow fila = resultBuscarRol.Rows[pos];
					if (fila.Cells[this.colCheck].Value != null && (bool)fila.Cells[this.colCheck].Value)
					{
						String idRol = fila.Cells["Rol"].Value.ToString();
						Seguridad.GUIAdmRoles admRoles = new Seguridad.GUIAdmRoles(seEdita, idRol);
						admRoles.ShowDialog(this);
						
					}
					cont++;
				}
				else if (cont > 1)
				{
					Utils.MessageAviso("Seleccione sólo un rol");		
				}	
			} catch {
				Utils.MessageAviso("Usted no ha seleccionado ningun rol");
			}
		}
		void Button5Click(object sender, EventArgs e)
		{
			
			visualizar(true);
			this.resultBuscarRol.Rows.Clear();
			buscarRol();
			
		}
		
		void SelTodoCheckedChanged(object sender, EventArgs e)
		{
			foreach (DataGridViewRow fila in resultBuscarRol.Rows)
			{
				if (this.selTodo.Checked == true)
					fila.Cells[this.colCheck].Value = (bool) true;
				if (this.selTodo.Checked == false)
					fila.Cells[this.colCheck].Value = (bool) false;
			}
		}
		
		void EliminarBTNClick(object sender, EventArgs e)
		{
			try {
			
				List<string> rolesElim = new List<string>();
				
				foreach(DataGridViewRow fila in this.resultBuscarRol.Rows)
				{
					if((fila.Cells[this.colCheck].Value != null) && (Convert.ToBoolean(fila.Cells[this.colCheck].Value) == true))
					{
						rolesElim.Add(fila.Cells["Rol"].Value.ToString());
					}
				}
				
				if (rolesElim.Count == 0)
				{
					Utils.MessageAviso("Seleccione un rol.");	
				}
				else 
				{								
					if (Utils.MessagePregunta("¿Está seguro que desea eliminar el(los) rol(es) seleccionado(s)?"))
					{
						BLRol blRol = new BLRol();
						for (int i=0; i < rolesElim.Count; i++){
							//MessageBox.Show("rol elim: "+rolesElim[i].ToString(),"Aviso");
							blRol.anularRol(rolesElim[i]);
						}	
						buscarRol();
												
					}
				}
				
			} catch {
				Utils.MessageAviso("Usted no ha seleccionado ningun rol");
			}
			
			
		}
		
		
		void VerBTNClick(object sender, EventArgs e)
		{
			visualizar(false);
			this.resultBuscarRol.Rows.Clear();
			buscarRol();
		}
		
		void AceptarBTNClick(object sender, EventArgs e)
		{
			try {
				int cont = 0;
				int aux = 0;
				int pos = 0;
				foreach (DataGridViewRow fila in resultBuscarRol.Rows)
				{
					if (fila.Cells[this.colCheck].Value != null && (bool)fila.Cells[this.colCheck].Value)
					{
						cont++;
						pos = aux;
					}
					aux++;
				}
				
				if (cont == 0)
				{
					Utils.MessageError("Seleccione un rol.");	
				}
				else if (cont == 1)
				{								
					DataGridViewRow fila = resultBuscarRol.Rows[pos];
					if (fila.Cells[this.colCheck].Value != null && (bool)fila.Cells[this.colCheck].Value)
					{
						this.rolSel.Rol = fila.Cells["Rol"].Value.ToString();
						this.rolSel.Descripcion = fila.Cells["Descripcion"].Value.ToString();
						this.rolSel.Estado = fila.Cells["Ventana"].Value.ToString();						
						this.rolSel.Privilegio = (new BLRol()).getPrivilegio(this.rolSel.Rol);
					
					}
					cont++;
				}
				else if (cont > 1)
				{
					Utils.MessageError("Seleccione sólo un rol");		
				}	
			} catch (Exception error){
				Utils.MessageError(error.ToString());
			}
			this.Close();
		}
		
		void resultBuscarRolCellMouseDoubleClick (object sender, DataGridViewCellMouseEventArgs e)
        {
        	try{        	
	        	//MessageBox.Show(listaClientes[e.RowIndex].Nombre);
	        	if(Convert.ToBoolean(resultBuscarRol.Rows[e.RowIndex].Cells[0].Value))
	        		resultBuscarRol.Rows[e.RowIndex].Cells[0].Value = false;
	        	else
	        		resultBuscarRol.Rows[e.RowIndex].Cells[0].Value = true;
	        	//this.Dispose();
        	}catch{
        		
        	}
        }     
		

        private void AceptarBTN_Click(object sender, EventArgs e)
        {
            try
            {
                int cont = 0;
                int aux = 0;
                int pos = 0;
                foreach (DataGridViewRow fila in resultBuscarRol.Rows)
                {
                	if (fila.Cells[this.colCheck].Value != null && Convert.ToBoolean(fila.Cells[this.colCheck].Value))
                    {
                        cont++;
                        pos = aux;
                    }
                    aux++;
                }

                if (cont == 0)
                {
                    Utils.MessageError("Seleccione un rol.");
                }
                else if (cont == 1)
                {
                    DataGridViewRow fila = resultBuscarRol.Rows[pos];
                    if (fila.Cells[this.colCheck].Value != null && (bool)fila.Cells[this.colCheck].Value)
                    {
                        this.rolSel.Rol = fila.Cells["Rol"].Value.ToString();
                        this.rolSel.Descripcion = fila.Cells["Descripcion"].Value.ToString();
                        this.rolSel.Estado = fila.Cells["Ventana"].Value.ToString();
                        this.rolSel.Privilegio = (new BLRol()).getPrivilegio(this.rolSel.Rol);

                    }
                    cont++;
                }
                else if (cont > 1)
                {
                    Utils.MessageError("Seleccione sólo un rol");
                }
            }
            catch (Exception error)
            {
                Utils.MessageError(error.ToString());
            }
            this.Close();
        }
		
		void ResultBuscarRolCellContentClick(object sender, DataGridViewCellEventArgs e)
		{
			
		}
	}
	
}

